transform: Treat 0 perspective transforms as identity
authorBenjamin Otte <otte@redhat.com>
Sun, 2 Jun 2019 13:06:50 +0000 (15:06 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 2 Jun 2019 13:12:37 +0000 (15:12 +0200)
This happens if you apply a perspective transform and its inverse, which
is the negative version of the perspective.

gsk/gsktransform.c

index ac81fe055b007b21157c0f39d6614474c04e5845..3baf8bb0615b44e0a8d4e59c98c86fe258f008fe 100644 (file)
@@ -1118,7 +1118,7 @@ gsk_perspective_transform_to_matrix (GskTransform      *transform,
   GskPerspectiveTransform *self = (GskPerspectiveTransform *) transform;
   float f[16] = { 1.f, 0.f, 0.f,  0.f,
                   0.f, 1.f, 0.f,  0.f,
-                  0.f, 0.f, 1.f, -1.f / self->depth,
+                  0.f, 0.f, 1.f, self->depth ? -1.f / self->depth : 0.f,
                   0.f, 0.f, 0.f,  1.f };
 
   graphene_matrix_init_from_float (out_matrix, f);